from skimage.segmentation import mark_boundaries
from skimage.io import imread, imsave
import numpy as np

# 载入彩色PNG图像
img = imread('./mask/003_image.png')

# 载入黑白TIFF掩码
mask = imread('./mask/003_mask.png')

# 使用mark_boundaries标记边界
vis_img = mark_boundaries(img, mask, color=(1, 0, 0), mode='thick')

# 将图像数据转换为uint8类型
vis_img_uint8 = (vis_img * 255).astype(np.uint8)

# 保存转换后的图像
imsave('./mask/boundaries_vis.png', vis_img_uint8)

if mask.ndim == 2:  # 检查mask是否为二维（灰度）
    mask_rgb = np.dstack((mask, mask, mask))  # 复制灰度通道形成RGB图像
else:
    mask_rgb = mask  # 如果mask已经是三通道，则直接使用

# 现在所有图像都是3维的，可以安全堆叠
combined_images = np.hstack((img, mask_rgb, vis_img_uint8))


imsave('./mask/c.png', combined_images)